Girar un número es darle la vuelta a las cifras. Si tenemos 4512, el número girado es 2154. Esta operación se puede conseguir pasando por todas las cifras de 4512 en el orden 2, 1, 5 y 4 y construir el número 2154 número a partir de ellas.
Con "construir" un número quiero decir recalcularlo a partir de sus cifras. Para recalcular el 2154, basta con multiplicar las cifras por su peso así: . De todas maneras esto no muestra el caracter repetitivo de la construcción. La misma fórmula se puede expresar así: . En esta otra fórmula, que realmente es una transformación de la primera, se aprecia que los números intermedios que se van calculando son el 2, el 21, el 215 y finalmente el 2154. Para pasar al siguiente, hay que multiplicar por 10 el anterior y sumar la cifra que toque.
El proceso se resume en la tabla siguiente:
M | cifra |
---|---|
0 | 2 |
2 | 1 |
21 | 5 |
215 | 4 |
2154 |
La idea es que al principio podemos partir solo del 2. Cuando llega el 1 (que hemos obtenido al desmenuzar 4512, multiplicamos el 2 por 10 y sumamos 1 (que dará 21). Esto nos prepara para la siguiente iteración. En realidad la primera vez tendremos que poner M a 0 y al multiplicarlo por 10 será igualmente 0, y a eso sumaremos el 2 con resultado 2.
Partiendo del bucle que extrae las cifras:
int cifra; while (N > 0) { cifra = N % 10; N = N / 10; }
Podemos añadir el número M que construimos así:
int cifra, M = 0; while (N > 0) { cifra = N % 10; M = M * 10 + cifra; N = N / 10; }
Al final es cuestión de mostrar el número M que hemos acumulado.
En preparación